#include <iostream>
#include <sys/ipc.h>    // Inter-Process Communication
#include <sys/shm.h>
#include <cstring>
#include <unistd.h>
#include "comm.hpp"

int main()
{
    key_t key = GetKey();
    // 获取共享内存
    int shmid = Getshm(key);
    // 挂载
    char *s = (char*)shmat(shmid, nullptr, 0);

    int fd = open(filename.c_str(), O_WRONLY);
    // TODO
    // 共享内存的通信方式，不会提供同步机制，共享内存是直接裸露给所有的使用者的，一定要注意共享内存的使用安全问题
    char c = 'a';
    for (; c <= 'z'; c++)
    {
        // s[c-'a'] = c;
        // std::cout << "write: " << c << " done" << std::endl;
        // sleep(3); 
        s[c-'a'] = c;
        std::cout << "write: " << c << " done" << std::endl;
        sleep(3); 

        // 通知server端，client端已经写入了
        int code = 1;
        write(fd, &code, sizeof(int));
    }

    // 去关联
    shmdt(s);

    close(fd);

    return 0;
}